package co.gov.medellin.ssti.sub.common.excepcion;



/**
 * Clase base para la gestion errores
 * 
 * @author acespedes - Consult-Soft S.A.
 * @version 4.0 28/11/2011
 * @since 1.4
 */
public class SUBException extends Exception {

	/**
	 * Default serial generated
	 */
	private static final long serialVersionUID = 1L;

	// ------------------------------------------------------------------------
	// Constructores
	// ------------------------------------------------------------------------

	/**
	 * Crea una nueva instancia de una Exception sin un mensaje detallado
	 */
	protected SUBException() {
		this("SUBException: <no-msg>");
	}

	/**
	 * Crea una nueva instancia de una Exception con un mensaje como parametro
	 * 
	 * @param msg
	 *            El mensaje que debe ser mostrado o impreso
	 */
	public SUBException(String msg) {
		super(msg);
		logDebugError(msg, this);
	}

	/**
	 * Crea una nueva instancia de una Exception y agrega el mensaje al trace
	 * 
	 * @param ex
	 *            Excepcion lanzada para capturar el mensaje y relanzarlo en un
	 *            string
	 */
	public SUBException(Exception ex) {
		super(ex.getMessage());
		this.setStackTrace(ex.getStackTrace());
		logError(ex);
	}

	/**
		 * Metodo que permite registrar en el ERROR LOG SAP PORTAL el stack trace
		 * generado por una excepcion en tiempo de ejecucion.
		 *  
		 * @author 71763606 - carlos.perez@consult-soft.com
		 * @version 19-10-2012
		 * 
		 */
	public void logError() {
		System.err.println("/******** TDSUB - cwsub ** INICIO ** ");
		printStackTrace(System.err);
		System.err.println("** FIN ** TDSUB - cwsub ********/");
	}

	/**
	 * Metodo que permite registrar en el ERROR LOG SAP PORTAL el stack trace
	 * generado por una excepcion en tiempo de ejecucion pasada como parametro.
	 *  
	 * @author acespedes
	 * @version 01-11-2012
	 * 
	 */
	public void logError(Exception ex) {
		System.err.println("/******** TDSUB - cwsub ** INICIO ** ");
		ex.printStackTrace(System.err);
		System.err.println("** FIN ** TDSUB - cwsub ********/");
	}

	/**
	 * Metodo que permite registrar en el ERROR LOG SAP PORTAL los mesajes de
	 * error con datos adicionales para DEBUG, generados en tiempo de ejecucion.
	 *  
	 * @author 71763606 - carlos.perez@consult-soft.com
	 * @version 19-10-2012
	 * 
	 */
	public static final void logDebugError(String debugMsg, Exception ex) {
		System.err.println("/******** TDSUB - cwsub ** INICIO ** ");
		System.err.println("** DEBUG MESSAGE-->" + debugMsg);
		if (ex != null) {
			ex.printStackTrace(System.err);
		}
		System.err.println("** FIN ** TDSUB - cwsub ********/");
	}
}